package  {
	import br.com.poliwar.view.events.TelaLoginEvent;
	import br.com.poliwar.view.TelaCadastro;
	import br.com.poliwar.view.TelaLogin;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.ObjectEncoding;
	import flash.net.Socket;
	
	/**
	 * ...
	 * @author Ricardo Teixeira
	 */
	public class Jogo extends Sprite {
		
		private var socket:Socket;
		private var telaLogin:TelaLogin;
		private var telaCadastro:TelaCadastro;
		
		public function Jogo () {
			this.socket = new Socket ();
			this.socket.addEventListener (Event.CONNECT, onConectado);
			this.socket.objectEncoding = ObjectEncoding.AMF3;
			this.conectar ();
		}
		
		private function exibirTelaLogin ():void {
			this.telaLogin = new TelaLogin ();
			this.telaLogin.addEventListener (TelaLoginEvent.ENTRAR, onEntrar);
			this.telaLogin.addEventListener (TelaLoginEvent.NOVO, onNovo);
			this.telaLogin.addEventListener (TelaLoginEvent.DADOS_INVALIDOS, onDadosInvalidos);
			this.addChild (this.telaLogin);
		}
		
		private function onDadosInvalidos(e:TelaLoginEvent):void {
			trace ("onDadosInvalidos", e.usuarioVO);
		}
		
		private function onNovo(e:TelaLoginEvent):void {
			trace ("onNovo", e.usuarioVO);
		}
		
		private function onEntrar(e:TelaLoginEvent):void {
			trace ("onEntrar", e.usuarioVO);			
			this.socket.writeObject ("\n");
			this.socket.writeObject (e.usuarioVO);
			this.socket.flush ();
		}
		
		private function onConectado(e:Event):void {
			trace ("onConectado");
			this.exibirTelaLogin ();
		}
		
		private function conectar (host:String = "127.0.0.1", porta:uint = 8080):void {
			this.socket.connect (host, porta);			
		}
		
	}

}